home *** CD-ROM | disk | FTP | other *** search
/ Aminet 23 / Aminet 23 (1998)(GTI - Schatztruhe)[!][Feb 1998].iso / Aminet / dev / basic / hsb_cgx_inc.lha / hsb_cgx_inc / example / CyberScreenModeReq.bas < prev    next >
BASIC Source File  |  1997-11-02  |  5KB  |  159 lines

  1. 'CyberScreenModeReq.bas 0.1
  2.  
  3. 'Compiler: HBC 2.0+
  4. 'Includes: 3.1
  5. 'Author:   steffen.leistner@styx.in-chemnitz.de
  6.  
  7. DEFLNG a-z
  8.  
  9. ' $NOWINDOW
  10. ' $NOEVENT
  11. ' $NOSTACK
  12. ' $NOARRAY
  13. ' $NOLINES
  14. ' $NOVARCHECKS
  15. ' $NOAUTODIM
  16. ' $NOLIBRARY
  17. ' $UNDERLINES
  18.  
  19. ' $INCLUDE exec.bh
  20. ' $INCLUDE dos.bh
  21. ' $INCLUDE asl.bh
  22. ' $INCLUDE graphics.bh
  23. ' $INCLUDE intuition.bh
  24. ' $INCLUDE utility.bh
  25. ' $INCLUDE cybergraphics.bh
  26.  
  27. CONST minver& = 37&
  28. CONST aslver& = 38&
  29. CONST cgxver& = 40&
  30.  
  31.  
  32. FUNCTION ModeFilter& (BYVAL hook&, BYVAL req&, BYVAL modeid&)
  33.     ModeFilter& = IsCyberModeID&(modeid&)
  34. END FUNCTION
  35.  
  36.  
  37. FUNCTION GetScreenMode&(title$, pos$, neg$, moderes&, widthres&, heightres&, depthres%)
  38.     SHARED workbuf&, filter&
  39.     
  40.     GetScreenMode& = FALSE&
  41.     
  42.     req& = AllocAslRequest&(ASL_ScreenModeRequest&, NULL&)
  43.     IF req&
  44.     
  45.         pubscreen& = LockPubScreen&(NULL&)
  46.         IF pubscreen&
  47.  
  48.             TAGLIST workbuf&, _
  49.                 ASLSM_Screen&,              pubscreen&, _
  50.                 ASLSM_InitialWidth&,        PEEKW(pubscreen& + ScreenWidth%) \ 3, _
  51.                 ASLSM_InitialHeight&,       PEEKW(pubscreen& + ScreenHeight%) - 50, _
  52.                 ASLSM_InitialLeftEdge&,     PEEKW(pubscreen& + ScreenWidth%) \ 6, _
  53.                 ASLSM_InitialTopEdge&,      25&, _
  54.                 ASLSM_InitialInfoLeftEdge&, 2 * (PEEKW(pubscreen& + ScreenWidth%) \ 6), _
  55.                 ASLSM_FilterFunc&,          filter&, _
  56.                 ASLSM_InitialInfoOpened&,   TRUE&, _
  57.                 ASLSM_DoWidth&,             TRUE&, _
  58.                 ASLSM_DoHeight&,            TRUE&, _
  59.                 ASLSM_DoDepth&,             TRUE&, _
  60.                 ASLSM_PositiveText&,        pos$, _
  61.                 ASLSM_NegativeText&,        neg$, _
  62.                 ASLSM_TitleText&,           title$, _   
  63.             TAG_END&
  64.             
  65.             IF AslRequest&(req&, workbuf&)
  66.                 GetScreenMode& = TRUE&
  67.                 moderes&    = PEEKL(req& + sm_DisplayID%)
  68.                 widthres&   = PEEKL(req& + sm_DisplayWidth%)
  69.                 heightres&  = PEEKL(req& + sm_DisplayHeight%)
  70.                 depthres%   = PEEKW(req& + sm_DisplayDepth%)
  71.             END IF
  72.  
  73.             UnLockPubScreen NULL&, pubscreen&
  74.         ELSE
  75.             PrintMessage "Error:", "Can't lock default pubscreen!", "Break"
  76.         END IF
  77.  
  78.         FreeAslRequest req&
  79.     ELSE
  80.         PrintMessage "Error:", "Can't create requester!", "Break"
  81.     END IF
  82. END FUNCTION
  83.  
  84.  
  85. SUB PrintMessage (first$, second$, gadget$)
  86.     IF PEEKL(SYSTAB + 8%)
  87.         reqbufsize& = es_sizeof% + LEN(first$) + LEN(second$) + LEN(gadget$) + 4&
  88.         easystruct& = AllocVec& (reqbufsize&, MEMF_PUPLIC& OR MEMF_CLEAR&)
  89.         IF easystruct&
  90.             toffs& = easystruct& + es_sizeof%
  91.             CopyMem SADD(first$), toffs&, LEN(first$)
  92.             POKEL easystruct& + es_Title%, toffs&
  93.             toffs& = toffs& + LEN(first$) + 1&
  94.             CopyMem SADD(second$), toffs&, LEN(second$)
  95.             POKEL easystruct& + es_TextFormat%, toffs&
  96.             toffs& = toffs& + LEN(second$) + 1&
  97.             CopyMem SADD(gadget$), toffs&, LEN(gadget$)
  98.             POKEL easystruct& + es_GadgetFormat%, toffs&
  99.             junk& = EasyRequestArgs& (NULL&, easystruct&, NULL&, NULL&)
  100.             FreeVec easystruct&
  101.         END IF
  102.     ELSE
  103.         con$ = first$ + CHR$(10) + second$ + CHR$(10)
  104.         junk& = xWrite&(xOutput&, SADD(con$), LEN(con$))
  105.     END IF
  106. END SUB
  107.  
  108.  
  109. FUNCTION Main&
  110.     SHARED workbuf&, filter&
  111.     LIBRARY OPEN "exec.library", minver&
  112.     LIBRARY OPEN "dos.library", minver&
  113.     LIBRARY OPEN "asl.library", aslver&
  114.     LIBRARY OPEN "graphics.library", minver&
  115.     LIBRARY OPEN "intuition.library", minver&
  116.     LIBRARY OPEN "cybergraphics.library", cgxver&
  117.  
  118.     Main& = RETURN_ERROR&
  119.     workbuf& = AllocVec& (512&, MEMF_PUBLIC& OR MEMF_CLEAR&)
  120.     IF workbuf& = NULL&
  121.         PrintMessage "Error:", "Not enough memory!", "Break"
  122.         EXIT FUNCTION
  123.     END IF
  124.     
  125.     filter& = AllocVec& (Hook_sizeof%, MEMF_PUBLIC& OR MEMF_CLEAR&)
  126.     IF filter& = NULL&
  127.         FreeVec workbuf&
  128.         PrintMessage "Error:", "Not enough memory!", "Break"
  129.         EXIT FUNCTION
  130.     END IF
  131.     INITHOOK filter&, VARPTRS(ModeFilter&)
  132.     
  133.     Main& = RETURN_WARN&
  134.     
  135.     IF GetScreenMode& ("CyberGraphX-Screenmodes:", "Select", "Cancel", m&, w&, h&, d%)
  136.         
  137.         IF GetDisplayInfoData&(NULL&, workbuf&, NameInfo_sizeof%, DTAG_NAME&, m&)
  138.         
  139.             body$ = "ModeName  : " + PEEK$(workbuf& + NameInfoName%) + CHR$(10) + _
  140.                     "ModeID    : $" + HEX$(m&) + CHR$(10) + _
  141.                     "Dimensions: " + LTRIM$(STR$(w&)) + "x" + LTRIM$(STR$(h&)) + "x" + LTRIM$(STR$(d%))
  142.             PrintMessage "Result:", body$, "Ok"
  143.             Main& = RETURN_OK&
  144.         
  145.         ELSE
  146.             PrintMessage "Result:", "Unknown Displaymode!", "Ok"
  147.         END IF
  148.         
  149.     END IF
  150.  
  151.     FreeVec filter&
  152.     FreeVec workbuf&
  153.  
  154. END FUNCTION
  155.  
  156. STOP Main&
  157.  
  158. DATA "$VER: CyberScreenModeReq.bas 0.1 "
  159.